
[dbo].[amsp_CMInsertNavMenu]
CREATE PROCEDURE [dbo].[amsp_CMInsertNavMenu]
@InTargetNavMenuID numeric,
@InTitle varchar(255),
@InName varchar(255),
@InContactID numeric,
@InWebsiteKey uniqueidentifier,
@InContentAuthorityGroupID numeric,
@OutNavMenuID numeric OUTPUT
AS
BEGIN
DECLARE
@LowestSortOrder numeric(28,18),
@TargetAncestorNavMenuID numeric,
@TargetExpirationDays int,
@TargetCategoryDepth int,
@TargetTemplatePath varchar(255),
@TargetNavContentGroupInd char(1),
@TargetContentAuthorityGroupID numeric,
@TargetMicrositeFlag char(1),
@TargetWebsiteKey uniqueidentifier,
@ParentNavMenuID numeric,
@AncestorNavMenuID numeric,
@ExpirationDays int,
@MaxSortOrder numeric(28,18),
@MinSortOrder numeric(28,18),
@LastSortOrder numeric(28,18),
@BelowSortOrder numeric(28,18),
@WebsiteKey uniqueidentifier,
@CMExpDaysDefault int,
@NavMenuID numeric
EXEC amsp_CMNavMenuRenum
IF @InTargetNavMenuID IS NULL BEGIN
SELECT @LowestSortOrder = Max(SortOrder)
FROM Nav_Menu
WHERE NavContentGroupInd = 'N'
SET @TargetCategoryDepth = -1
SET @TargetNavContentGroupInd = 'N'
SET @TargetContentAuthorityGroupID = @InContentAuthorityGroupID
END
ELSE
SELECT @LowestSortOrder = SortOrder,
@TargetAncestorNavMenuID = AncestorNavMenuID,
@TargetExpirationDays = ExpirationDays,
@TargetCategoryDepth = CategoryDepth,
@TargetTemplatePath = TemplatePath,
@TargetNavContentGroupInd = NavContentGroupInd,
@TargetContentAuthorityGroupID = ContentAuthorityGroupID,
@TargetMicrositeFlag = MicrositeFlag,
@TargetWebsiteKey = WebsiteKey
FROM Nav_Menu
WHERE NavMenuID = @InTargetNavMenuID
IF @InContentAuthorityGroupID IS NOT NULL AND @TargetContentAuthorityGroupID <> @InContentAuthorityGroupID
SET @TargetContentAuthorityGroupID = @InContentAuthorityGroupID
SELECT @CMExpDaysDefault = CAST(Value as numeric)
FROM System_Variable
WHERE Name = 'CMExpDaysDefault'
IF @TargetAncestorNavMenuID IS NULL BEGIN
SET @ParentNavMenuID = NULL
SET @AncestorNavMenuID = NULL
SET @ExpirationDays = @CMExpDaysDefault
END
ELSE BEGIN
SET @ParentNavMenuID = @InTargetNavMenuID
SET @AncestorNavMenuID = @TargetAncestorNavMenuID
SET @ExpirationDays = @TargetExpirationDays
END
SELECT @MinSortOrder = a.SortOrder,
@MaxSortOrder = (SELECT Min(x.SortOrder)
FROM Nav_Menu x
WITH (NOLOCK)
WHERE x.SortOrder > a.SortOrder
AND x.CategoryDepth <= a.CategoryDepth)
FROM Nav_Menu a WITH (NOLOCK)
WHERE a.NavMenuID = @InTargetNavMenuID
IF @MaxSortOrder IS NOT NULL
SELECT @LastSortOrder = Max(a.SortOrder)
FROM Nav_Menu a WITH (NOLOCK)
WHERE a.SortOrder > @MinSortOrder
AND a.SortOrder < @MaxSortOrder
AND a.NavContentGroupInd = @TargetNavContentGroupInd
ELSE
SELECT @LastSortOrder = Max(a.SortOrder)
FROM Nav_Menu a WITH (NOLOCK)
WHERE a.SortOrder > @MinSortOrder
AND a.NavContentGroupInd = @TargetNavContentGroupInd
IF @LastSortOrder IS NOT NULL
SET @LowestSortOrder = @LastSortOrder
SELECT @BelowSortOrder = Min(SortOrder)
FROM Nav_Menu WITH (NOLOCK)
WHERE SortOrder > @LowestSortOrder
IF @BelowSortOrder IS NULL
SET @BelowSortOrder = @LowestSortOrder + 1
IF @TargetWebsiteKey IS NOT NULL
SET @WebsiteKey = @TargetWebsiteKey
ELSE IF @TargetNavContentGroupInd = 'C'
SELECT TOP 1 @WebsiteKey = WebsiteKey
FROM Website
WHERE SimpleAdvancedInd = 'A'
AND ActiveFlag = 'Y'
AND IsiMISWebsite = 0
AND Cast(WebsiteKey as varchar(100)) <> (SELECT Value FROM System_Variable WHERE Name = 'CMAdminWebsiteKey')
ELSE
SET @WebsiteKey = @InWebsiteKey
INSERT INTO Nav_Menu (
Name,
Title,
ParentNavMenuID,
AncestorNavMenuID,
CategoryDepth,
SortOrder,
TemplatePath,
WorkflowStatusCode,
NavContentGroupInd,
ContentAuthorityGroupID,
DirectListComboInd,
OwnerContactID,
LastUpdatedByContactID,
ExpirationDays,
MicrositeFlag,
WebsiteKey)
VALUES (
@InName,
@InTitle,
@ParentNavMenuID,
@AncestorNavMenuID,
@TargetCategoryDepth + 1,
(@LowestSortOrder + @BelowSortOrder)/2,
@TargetTemplatePath,
'W',
@TargetNavContentGroupInd,
@TargetContentAuthorityGroupID,
'D',
@InContactID,
@InContactID,
@ExpirationDays,
@TargetMicrositeFlag,
@WebsiteKey)
SELECT @NavMenuID = @@Identity
IF @AncestorNavMenuID IS NULL AND @InTargetNavMenuID IS NOT NULL
UPDATE Nav_Menu
SET AncestorNavMenuID = @NavMenuID
WHERE NavMenuID = @NavMenuID
INSERT INTO Nav_Menu_Workflow_Log (
NavMenuID,
WorkflowStatusCode,
ContactID,
ChangeDateTime)
VALUES (
@NavMenuID,
'W',
@InContactID,
CURRENT_TIMESTAMP)
IF @TargetNavContentGroupInd = 'C'
EXEC amsp_CMMoveContentFolder @NavMenuID, @InTargetNavMenuID, NULL
EXEC amsp_CMUpdateNavProperties @NavMenuID
SET @OutNavMenuID = @NavMenuID
END
GO
GRANT EXECUTE ON [dbo].[amsp_CMInsertNavMenu] TO [IMIS]
GO